package com.moyu.user.domain.user;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.moyu.common.core.domain.BaseEntity;
import com.moyu.user.domain.role.Role;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;

import java.util.List;

/**
 * 普通用户实体类
 *
 * @Author 赵彦博
 * @Date 2024/12/20 10:35
 */
@Data
@ToString
@EqualsAndHashCode
@TableName("tb_user")
public class User extends BaseEntity {

    /**
     * 雪花算法生成的用户ID
     */
    @JsonSerialize(using = ToStringSerializer.class) // Json序列化的过程中把Long自动转换成String
    @TableId(type = IdType.ASSIGN_ID) // 雪花算法
    private Long id;

    /**
     * 唯一账号(10位)
     */
    private String userAccount;

    /**
     * 用户密码
     */
    private String password;

    /**
     * 昵称
     */
    private String nickName;

    /**
     * 手机号
     */
    private String phoneNumber;

    /**
     * 邮箱地址
     */
    private String emailAddress;

    /**
     * 性别
     */
    private int gender;

    /**
     * 头像
     */
    private String headImage;

    /**
     * 帖子数量
     */
    private Integer articleCount;

    /**
     * 个人简介
     */
    private String remark;

    /**
     * 活跃状态
     */
    private Integer state;

    @TableField(exist = false)
    private List<Role> roles;
}
